package com.yonyou.gmmc.service.leads.dao;

import java.util.Date;
import java.util.List;
import java.util.Map;

import org.apache.ibatis.annotations.Param;
import org.marketing.common.dto.customerInfo.MemberDto;
import org.marketing.common.dto.leads.InsuranceDto;
import org.marketing.common.dto.leads.ThreadcarDto;
import org.marketing.common.dto.leads.TmFixCodeDto;
import org.marketing.common.dto.points.CustomerPointsDto;
import org.marketing.common.dto.showroom.BrandExhibitionDto;
import org.marketing.common.dto.showroom.PackageSimpleDto;

import com.yonyou.gmmc.service.leads.annotation.OracleDb;
import com.yonyou.gmmc.service.leads.model.SaleInfo;
import com.yonyou.gmmc.service.leads.model.ThreadmqDto;

/**
 * @author yaohan
 * @date 2017-03-08
 *
 */
@OracleDb
public interface TmPotentialUserMapper {
	
	 /**
	  * 保存推荐购车
	  *@author yaohan
	 * @param threadcardto
	 * @date 2017-03-08
	 */
	public void save(@Param("threadcardto") ThreadcarDto threadcardto);
	
	 /**
	  * 查找推荐购车
	  *@author yaohan
	 * @date 2017-03-18
	 */
   public List<InsuranceDto> getInsurance();
	
    /**
    * 判断是否为车主
    * @author QianKun
    * @date 2017年3月17日
    * @param openId
    * @return
    */
    public List<MemberDto> queryUserOwner(@Param("openId") String openId);
    
    public List<MemberDto> queryUserOwners(@Param("usesId") Long usesId);
    
    public List<ThreadcarDto> selectThread();
	
    /**
	  * 通过推荐人 userid friendname recommendedcar 查找推荐时间
	  *@author yaohan
	 * @param threadcardto
	 * @date 2017-03-18
	 */
    public List<ThreadcarDto> getCreatetime(@Param("openId") String openId, @Param("friendphone") String friendphone,@Param("recommendedcar") String recommendedcar,@Param("dealerCode") String dealerCode);
    
    /**
     * 
     * 获取字典表 推荐理由 code和name 
     * @return
     */
    public List<TmFixCodeDto> getTscode(Integer codeType); 

    /**
    * 根据品牌code或查询所有品牌车系数据
    * @author QianKun
    * @date 2017年3月13日
    * @param brandCode
    * @return
    */
    public List<BrandExhibitionDto> queryBrandExhibitionData(@Param("brandCode") String brandCode);
 
    /**
    *
    * @author LiuJun
    * 根据车系code查询所有车型以及车型的配置-根据排量和变速箱类型
    * @date 2017年1月3日
    * @param seriesCode
    * @param dealerCode
    * @param gearboxType
    * @param displacement
    * @return
    */
    public List<PackageSimpleDto> queryPackageDataByDisplacementAndGearboxType(@Param("seriesCode") String seriesCode,
                                                                                               @Param("dealerCode") String dealerCode);

    
    /**
     * 通过单号修改状态
     * @param recommendno
     * @param status
     * @return
     */
    public void updateStatus(SaleInfo SaleInfo);


    /**
     * 通过单号获取userid 成功条数
     * @param recommendno
     * @return
     */
    public List<ThreadmqDto> getThreadmq(@Param("recommendno") String recommendno,@Param("after") String after);

    public String selectUserRegistDate(@Param("recommendno") String recommendno);
    
    /**
     * 通过单号获取state
     * @param recommendno
     * @return
     */
    public List<ThreadmqDto> getThreadid(@Param("recommendno") String recommendno);
    /**
     * 通过单号获取userid userphone
     * @param recommendno
     * @return
     */
    public List<ThreadmqDto> getThreadqk(@Param("recommendno") String recommendno);
    
    /**
     * 获取单号
     * @param recommendno
     * @return
     */
    public List<ThreadcarDto> getSeq();
    
    /**
    * 查询推荐人今日推荐数
    * @author Administrator
    * TODO description
    * @date 2017年4月13日
    * @param userId
    * @return
    */
    public int selectThreadCount(@Param("userId") Long userId);
    
    /**
     * 判断朋友手机号和推荐店是否唯一
     * @param userId
     * @param friendphone
     * @param recommendedcar
     * @param dealerCode
     * @return
     */
    public List<ThreadcarDto> getThreadPhone(@Param("friendphone") String friendphone,@Param("dealerCode") String dealerCode);

	public Map<String, Object> queryCarOwnerByRecommendNo(@Param("recommendno") String recommendno);
    
	/**
	* 检查是否为已加分的线索
	* @author Administrator
	* TODO description
	* @date 2017年5月31日
	* @param recommendno
	* @return
	*/
	public List<CustomerPointsDto> queryLeads(@Param("recommendno") String recommendno);

    /**
    * 更新线索状态
    * @author Administrator
    * TODO description
    * @date 2017年5月4日
    * @param SaleInfo
    * @return
    */
    public int updateThreadStatus(SaleInfo saleInfo);
    
    
    /**
    * 查询推荐线索状态
    * @author Administrator
    * TODO description
    * @date 2017年5月4日
    * @param recommendno
    * @return
    */
    public String selectThreadStatus(String recommendno);
    

    public List<ThreadmqDto> getThreadInfo(@Param("recommendno") String recommendno);

    /**
     * 通过openId查询userId
     * @param openId
     * @return
     */
	public Long queryUerId(String openId);
	
	public Date selectThreadDate(@Param("recommendno") String recommendno);
	
	public Integer selectPotentialUserId(@Param("usesId") Integer usesId);

    public String selectDealerById(@Param("potentialUserId") Integer potentialUserId);
    
    public List<ThreadcarDto> selectMyThread(@Param("openId") String openId);
}


